@Repository
不是標準的JPA註釋,他是 Spring 框架中的一個註解,它用於標識一個類別作為資料訪問層(DAO - Data Access Object)組件。具體來說,@Repository
註解用於將資料訪問類別標記為 Spring 受管理的 bean,表示它負責處理與資料庫或其他資料來源的互動,像是查詢、插入、更新和刪除數據。通常,資料訪問類別用於執行與持久性存儲相關的操作。而 Spring Data JPA是Spring框架的一部分,提供了對JPA的抽象,使數據庫操作更容易!
首先,我們需要有對應資料庫的示實體類別。
package com.example.spring.entity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
@Table(name = "RESTAURANT") // 指定映射到名稱為 "RESTAURANT" 的資料表
public class Restaurant {
@Id
@Column(name = "EMPLOYEE_NUM") // 代表對應的資料表欄位
private Long employeeNum; // 這是主Key
private String chef;
private String food;
private String recipe;
// 下面加入屬性的 Getter 和 Setter 方法
}
第二步,使用@Repository
來標識資料訪問層,而這個界面會繼承 JpaRepository
:
package com.example.spring.repository;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface RestaurantRepository extends JpaRepository<Restaurant, Long> {
}
@Repository
對介面RestaurantRepository
進行標記,表示它是一個存儲庫。JpaRepository<Restaurant, Long>
,這是Spring Data JPA的一個介面。它為Restaurant
實體提供了一組通用的CRUD(創建、讀取、更新、刪除)操作。使用這個設置,您可以使用JpaRepository
提供的方法,如save
、findById
、findAll
、delete
等,無需手動編寫SQL查詢即可對Restaurant
實體執行CRUD操作。
結論,想使用JPA所提供方,您需要配置Spring應用程式上下文,定義與資料庫對應的Restaurant
實體類別,提供JPA配置,並設置適當的資料來源才能使其正常工作。
https://spring.io/projects/spring-data-jpa
https://www.baeldung.com/spring-data-repositories
https://www.baeldung.com/the-persistence-layer-with-spring-data-jpa